package com.shht.apps.yqj.openapi;

import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.Calendar;
import java.util.Date;

public class checktime {



    public static void main(String[] args) {
        // 示例使用
    	
		

	    
	    Date now = new Date();// 系统日期
		SimpleDateFormat DateFormat = new SimpleDateFormat("yyyy-MM-dd");
		String today = DateFormat.format(now);// 日期
		Calendar calendar = Calendar.getInstance();  
	    calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - 90);  
	    Date endtoday = calendar.getTime();  
	    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");  
	    String enddate = format.format(endtoday);  
	    
		System.out.print(enddate);
    	String time1="11:40";
    	String[] timefield=time1.split(":");
    	Integer hour1=new Integer(timefield[0]);
    	Integer min1=new Integer(timefield[1]);
        LocalTime start1 = LocalTime.of(hour1, min1);
        LocalTime end1 = LocalTime.of(12, 0);
        LocalTime start2 = LocalTime.of(11, 0);
        LocalTime end2 = LocalTime.of(14, 0);

        boolean overlap = isTimeOverlap(start1, end1, start2, end2);
        if (overlap) {
            System.out.println("时间段重叠");
        } else {
            System.out.println("时间段不重叠");
        }
        
        LocalDateTime start11 = LocalDateTime.of(2023, 7, 14, 9, 0);
        LocalDateTime end11 = LocalDateTime.of(2023, 7, 14, 12, 0);
        LocalDateTime start22 = LocalDateTime.of(2023, 7, 14, 11, 0);
        LocalDateTime end22 = LocalDateTime.of(2023, 7, 14, 14, 0);

        boolean overlap2 = isDateTimeOverlap2(start11, end11, start22, end22);
        if (overlap2) {
            System.out.println("日期时间段重叠");
        } else {
            System.out.println("日期时间段不重叠");
        }
        
     // 示例使用
        Date start12 = new Date(2023 - 1900, 6, 14, 9, 0); // 注意：月份需要减1，因为月份是从0开始的
        Date end12 = new Date(2023 - 1900, 6, 14, 12, 0);
        Date start23 = new Date(2023 - 1900, 6, 14, 11, 0);
        Date end23 = new Date(2023 - 1900, 6, 14, 14, 0);

        boolean overlap3 = isDateTimeOverlap3(start12, end12, start23, end23);
        if (overlap) {
            System.out.println("日期时间段重叠");
        } else {
            System.out.println("日期时间段不重叠");
        }
    }
    
	public static boolean isTimeOverlap(LocalTime start1, LocalTime end1, LocalTime start2, LocalTime end2) {
        if (start1.isBefore(start2) && end1.isAfter(start2)) {
            return true; // 时间段1的结束时间晚于时间段2的开始时间，且时间段1的开始时间早于时间段2的结束时间
        }

        if (start2.isBefore(start1) && end2.isAfter(start1)) {
            return true; // 时间段2的结束时间晚于时间段1的开始时间，且时间段2的开始时间早于时间段1的结束时间
        }

        if (start1.equals(start2) || end1.equals(end2)) {
            return true; // 时间段1的开始时间与时间段2的开始时间相同，或者时间段1的结束时间与时间段2的结束时间相同
        }

        return false; // 没有重叠
    }
    public static boolean isDateTimeOverlap2(LocalDateTime start1, LocalDateTime end1, LocalDateTime start2, LocalDateTime end2) {
        if (start1.isBefore(end2) && end1.isAfter(start2)) {
            return true; // 日期时间段1的结束时间晚于日期时间段2的开始时间，且日期时间段1的开始时间早于日期时间段2的结束时间
        }

        if (start2.isBefore(end1) && end2.isAfter(start1)) {
            return true; // 日期时间段2的结束时间晚于日期时间段1的开始时间，且日期时间段2的开始时间早于日期时间段1的结束时间
        }

        if (start1.equals(start2) || end1.equals(end2)) {
            return true; // 日期时间段1的开始时间与日期时间段2的开始时间相同，或者日期时间段1的结束时间与日期时间段2的结束时间相同
        }

        return false; // 没有重叠
    }
    
    public static boolean isDateTimeOverlap3(Date start1, Date end1, Date start2, Date end2) {
        if (start1.before(end2) && end1.after(start2)) {
            return true; // 日期时间段1的结束时间晚于日期时间段2的开始时间，且日期时间段1的开始时间早于日期时间段2的结束时间
        }

        if (start2.before(end1) && end2.after(start1)) {
            return true; // 日期时间段2的结束时间晚于日期时间段1的开始时间，且日期时间段2的开始时间早于日期时间段1的结束时间
        }

        if (start1.equals(start2) || end1.equals(end2)) {
            return true; // 日期时间段1的开始时间与日期时间段2的开始时间相同，或者日期时间段1的结束时间与日期时间段2的结束时间相同
        }

        return false; // 没有重叠
    }

}
